package JavaFoundation;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class AlgorithmTest {//算法

    public static void main(String[] args) {
    /*给定一个数组和一个目标值，当数组中的两个数相加=目标值，返回它们的下标
     */
        int[] muns=new int[]{1,5,9,8,10,4};
        int target = 9;
        List<List<Integer>> array = new ArrayList<>();
//        for (int i = 0; i < muns.length-1; i++) {
//            for (int j = i+1; j < muns.length; j++) {
//                if(muns[i]+muns[j]==target){
//                    List<Integer> temp = new ArrayList<>();
//                    temp.add(i);
//                    temp.add(j);
//                    array.add(temp);
//                }
//            }
//        }
//        array.forEach(System.out::println);

        Map<Integer,Integer> map = new HashMap<>();
        for (int i = 0; i < muns.length; i++) {
            int partnerNum = target - muns[i];
            if(map.containsKey(partnerNum)){//存在这个键
                List<Integer> temp = new ArrayList<>();
                temp.add(i);
                temp.add(map.get(partnerNum));
                array.add(temp);
            }else {
                map.put(muns[i],i);//以值为键
            }
        }
        array.forEach(System.out::println);
    }

}
